Unicode_logo


CITS3403/CITS5504 - Agile Web Development - Final Project

Semester 1, 2020

Development Team:

Johnny Barrett Ivy Bui Jesse Carter Cesar Gonzalez

Table of Contents


Motivation

One of the biggest challenges faced by Computer Science and Data Science student is the ability to demostrate our coding skills by completing coding test using pen and paper, at the same time, not able to practice on a real life coding platform that provides a more realistic experience when preparing for exams and to improve our coding skills.

For this reason we decided to develop Unicode, so that professors as well as student can improve the learning experience when it comes to learn how to code.

Description

Unicode is an online quiz platform for educational institutions that allows admin/teachers users to create and evaluate coding related tests and users/students to take tests and see results. It is design to provide a friendly experience for studens and teachers without compromising the level of complexity required for developing our coding learning experience.

Unicode provides the ability to not only test our theorical knowledge of but also our technical abilities. Teachers/admin have the ability to select from three different questions assesment types:

Another important functionality of Unicode is the ability of the admin to organize create tests by course and assign students to different courses. Also, the admin can decide when to enble test to be live(ready to take) for all students enroll in the course.

Design Process

We decided to use MVC(model view controller) Arquitecture for our project. The model refers to an object referencing an entity in a database, the view is how that object is presented to the user and the controller is a linking class that builds the model from the database, prepares the view based on the model, and the updates and saves the models back to the database.

# User User Story Story Point
1 Admin I want to be able to create coding tests 1
2 Admin I want to be able to group my tests into courses 1
3 Admin I want to be able to edit, delete, rename and make live tests 2
4 Admin I want to be able to control student access to the tests 3
5 Admin I want to have a mix of questions available to me 1
6 Admin I want to have an in-built code editor 1
7 Admin I want to active and deactive tests 10
8 Admin I want to be able to manually mark tests 4
9 Admin I want to see my student’s results of my tests/courses 5
10 Admin I want to be able to display the solutions to my students after the test 6
11 Admin I want to be able to allocate marks to each question 3
12 Student I want to be able to take the test assigned to me 7
13 Student I want to be able to see my marks, and how they compare to the rest of the class 8
14 Student I want to see the solutions the tests (after) 9

User View
All Login
All Registration
Admin Course View
Admin Create a new course prompt
Admin Single course view (contains each test)
Admin Create new test prompt
Admin Test result dashboard
Admin New test,add questions (3 types options, Description answers and allocated marks
Admin Test preview (what it looks to students)
Student Single course view (contain each available test)
Student Taking test view
Student Test result view

color

How to Install from localhost

Instructions for installation in localhost, click me to expand

  1. Clone repository using https://github.com/johnnybarrels/agile-proj2.git
$ git clone https://github.com/johnnybarrels/agile-proj2.git
  1. Change working directory to agile-proj2:
$ cd agile-proj2
  1. Create virtual enviroment and activate venv:
$ python -m venv venv

# To activate:
$ source venv/bin/activate

or

$ python3 -m venv venv

# To activate:
$ source venv/bin/activate
  1. Install requirements:
$ pip install -r requirements.txt
  1. Make sure you are on the correct working directory for the app:
$ cd app-dev
  1. Launch Database:
$ flask db init
$ flask db migrate -m ' ' 
$ flask db upgrade
  1. Populate Database:
  • We have created python function to automtically populate the database (use flask shell to access python on terminal)

    $ flask shell
    • Import the function and execute
    from app.db_tools import purge_and_load 
    purge_and_load()
    exit() 
  1. launch app:
$ flask run

How to Use

For Admin(Teachers) Profile:

Instructions for admin, click me to expand

  • Login:
    • Fill up Login form using email and password
    • Click Login

    • Create a New Course:
      • Click on CREATE A NEW COURSE or “+” icon next to Course
      • Type Course Name
      • Type Course Code
      • Click Create Course
    • Create a New Test:
      • Select the Course on the left panel
      • Click on New Test
      • Type Test name
      • Click Create Test
      • Click on the new created test
        • (Optional) Click on dropdown to rename, delete or edit test
      • Click onEdit Test
      • Select the type of questions (Output, MCQ or Write a code)
      • Type the Question on the Description field (for the write a code type of questions use the code field to typer your coding question)
      • Type Solution
      • Type the Allocated mark for the question
      • Click Save (or Clear to restart the questions)
      • Once finished, click Return
      • Once finishing creating the questions, click the course name on the left panel
      • Click Not Live to make sure test live
    • Add Students to Course:
      • Once on the Course View, Click Manage students
      • Type the Student number
    • Delete Students from Course:
      • Once on the Course View, Click Manage students
      • Look for the student email and click “x”
    • Marking Test:
      • Click on the test you want to mark within the course
      • Here you can see how many students have taken the test and some statistics, including the mark of the automatic marked questions
      • At the bottom click View test
      • Click on each questions to add manual marks and a/or adjust marks.
      • Click on Submit and give feedback add feedback to student and complete the marking
    • Publish Test Results:

For Students Profile:

Instructions for students, click me to expand

  • Registration (for new users only):
    • Click on Sign up
    • Fill up registration form
    • Click Register

    • Login:
      • Fill up Login form using email and password
      • Click Login
    • Taking Test:
      • Click on Course
      • Select the test to take
      • Once test completed Select Submit test
    • View Results:
      • Click on submitted test and see result at the bottom of the page

How to Test Unicode

⚠️ First make sure you are in the app-dev.

unittest:

For testing password hashing and test creation.

  • To use just type on the terminal the following command:
python -m Tests.unittest

unittes will test the following:

  • Password hashing test_set_pw and test_set_pw2
  • Main page login test_main_page
  • Test the registration module test_users_can_register
  • Test that only registered users can login test_users_cannot_unless_registered
  • Test that there are not duplicate registration test_duplicate_user_registration_throws_error

sytemtest:

⚠️ Please make sure to run system test last and to manually change the Config object to TestConfing in the __init__.py overwrite existing to avoid ovewriting existing database.

Using selenium to test our app with firefox web browser - Test for student login - Test for admin login - Test for student registration and login

python -m Tests.system

systemtest will test the following:

  • Login page for students test_login_user
  • Login page for admin test_login_admin
  • Test complete new user registration system test_user_registration

What is Next

We believe that UniCode have inmense potential to keep growing to become an even more robust educational tool for students and teachers. We have identify the following potential enhancement that could be impletmented in the future:

License

License